home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / comm2 / ums116bt.lha / UMS / rexx / ReadMessage.rexx < prev    next >
OS/2 REXX Batch file  |  1995-05-13  |  3KB  |  137 lines

  1. /* ------------------------------------------------------------------------
  2.    :Program.    ReadMessage.rexx
  3.    :Contents.   reads a message from UMS' messagebase
  4.    :Author.     Kai Bolay [kai]
  5.    :Address.    Snail Mail:              EMail:
  6.    :Address.    Hoffmannstraße 168       UUCP: kai@amokle.stgt.sub.org
  7.    :Address.    D-71229 Leonberg         FIDO: 2:2407/106.3
  8.    :History.    v1.0 [kai] 23-Sep-93
  9.    :History.    v1.1 [hG]  16-Jan-94  added arguments parsing,
  10.    :History.                          added option NoUpdate
  11.    :History.    V1.2 [hG]  20-Jan-94  shows user/global status textual
  12.    :History.    v1.3 [hG]  23-Jan-94  uses UMSInit.rexx 1.1
  13.    :History.                          hgRexxSupport.library
  14.    :History.    v2.0 [kai] 21-Dec-94  adapted to UMS v11
  15.    :History.    v2.1 [kai] 14-Apr-95  beautyfied and new flags
  16.    :Version.    $VER: ReadMessage.rexx 2.1 (14.4.95)
  17.    :Copyright.  Public Domain
  18.    :Language.   ARexx
  19.    :Translator. RexxMast
  20. ------------------------------------------------------------------------ */
  21.  
  22. options results
  23.  
  24. signal on BREAK_C
  25. signal on BREAK_D
  26. signal on BREAK_E
  27. signal on BREAK_F
  28. signal on HALT
  29.  
  30. RC = 0
  31.  
  32. signal on ERROR
  33. signal on IOERR
  34. signal on SYNTAX
  35.  
  36. /*** Init ***/
  37.  
  38. call addlib("rexxdossupport.library", 0, -30)
  39. call addlib("ums.library", 0, -210, 11)
  40. call UMSInitConsts()
  41.  
  42. /*** Arguments ***/
  43.  
  44. ProgramName = "ReadMessage";
  45. ArgsTemplate = "NAME/A,PASSWORD,NUM/A/N,SERVER/K,NOUPDATE/S"
  46. args.SERVER = ""
  47. args.PASSWORD = ""
  48.  
  49. parse arg arguments
  50. if strip(arguments) = '?' then do
  51.   call writech(STDOUT, ArgsTemplate || ': ')
  52.   arguments = readln(STDIN)
  53. end; else nop
  54. if ~ReadArgs(arguments,ArgsTemplate,"args.") then do
  55.   say Fault(RC, ProgramName)
  56.   exit 10
  57. end; else nop
  58.  
  59. /*** Login ***/
  60.  
  61. account = UMSLogin(args.name, args.password, args.server)
  62. if account = 0 then do
  63.   say "unable to login."
  64.   exit 10
  65. end
  66.  
  67. /*** Do the magic ***/
  68.  
  69. drop msg. /* _IMPORTANT_ */
  70. if UMSReadMsgAll(account, args.num, msg., args.NoUpdate) then do
  71.   say "Message #" || args.num
  72.   do field = 0 to UMSNUMFIELDS
  73.     if symbol("msg." || field) = "VAR" then do
  74.       say "Field #" || field || ": '" || msg.field || "'"
  75.     end
  76.   end
  77.   if UMSReadMsgInfo(account, args.num, msg.) then do
  78.     say "HDRLEN:" msg.HDRLEN
  79.     say "TXTLEN:" msg.TXTLEN
  80.     say "DATE:" msg.DATE
  81.     say "UP:" msg.UP
  82.     say "DN:" msg.DN
  83.     say "LT:" msg.LT
  84.     say "RT:" msg.RT
  85.     say "GLOBALSTAT:" FlagToStat(msg.GLOBALSTAT,"Deleted","Expired","Exported","Orphan","Link","HardLink","Parked","HasFile")
  86.     say "USERSTAT:" FlagToStat(msg.USERSTAT,"0","1","2","3","Archive","Junk","PostPoned","Selected","Old","WriteAccess","ReadAccess","ViewAccess","Owner","13","14","Filtered")
  87.     say "LOGINSTAT:" c2x(msg.LOGINSTAT)
  88.     say "SOFTLINK:" msg.SOFTLINK
  89.     say "HARDLINK:" msg.HARDLINK
  90.   end; else do
  91.     call CheckErr
  92.   end
  93. end; else do
  94.   call CheckErr
  95. end
  96.  
  97. /*** Final cleanup ***/
  98.  
  99. BREAK_C:
  100. BREAK_D:
  101. BREAK_E:
  102. BREAK_F:
  103. ERROR:
  104. HALT:
  105. IOERR:
  106. SYNTAX:
  107.  
  108. IF RC ~= 0 THEN DO
  109.   SAY "Error: " rc errortext(rc) "Line" sigl
  110. END
  111.  
  112. /*** Logout ***/
  113.  
  114. if account ~= 0 then do
  115.   call UMSLogout(account)
  116.   account = 0
  117. end
  118.  
  119. exit 0
  120.  
  121. /*** Support ***/
  122.  
  123. CheckErr: procedure expose account
  124.   err = UMSErrNum(account)
  125.   if err ~= 0 then do
  126.     say "UMS Error #" || err || ": " || UMSErrTxt(account)
  127.   end
  128. return
  129.  
  130. FlagToStat: PROCEDURE
  131.   flags = arg(1)
  132.   status = '';
  133.   do i = 0 to arg()
  134.     if BITTST(flags,i) then status = status arg(i+2)
  135.   end;
  136. return status
  137.